#include <iostream>
#include <cstring>
using namespace std;
const int N=1e5+10,M=2e5+10;
int e[M],ne[M],h[N],idx,w[M];
int res;
void add(int a,int b,int c)
{
    e[idx]=b;
    ne[idx]=h[a];
    w[idx]=c;
    h[a]=idx++;
}
int dfs(int u,int fa)
{
    int d1=0;
    int d2=0;
    int dist=0;
    for(int i=h[u];~i;i=ne[i])
    {
        int j=e[i];
        if(j==fa) continue;
        int d = dfs(j,u)+w[i];
        dist=max(dist,d);

        if(d>d1) d2=d1,d1=d;
        else if(d>d2) d2=d;
    }

    res=max(res,d1+d2);
    return dist;

}
int main()
{
    memset(h,-1,sizeof(h));
    int n;
    cin>>n;
    for(int i=1;i<n;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        add(a,b,c);
        add(b,a,c);
    }
    dfs(1,-1);
    cout<<res;
    return 0;
}
